# Chat models

self_prompting/direct/gpt-4-32k:
  class: evals.solvers.providers.openai.openai_solver:OpenAISolver
  args:
    completion_fn_options:
      model: gpt-4-32k

self_prompting/direct/gpt-3.5-turbo-16k:
  class: evals.solvers.providers.openai.openai_solver:OpenAISolver
  args:
    completion_fn_options:
      model: gpt-3.5-turbo-16k

# Completion models

self_prompting/completion_hhh/code-davinci-002:
  class: evals.solvers.nested.hhh_solver:HHHSolver
  args:
    solver:
      class: evals.solvers.providers.openai.openai_solver:OpenAISolver
      args:
        completion_fn_options:
          model: code-davinci-002

self_prompting/completion_hhh/gpt-4-base:
  class: evals.solvers.nested.hhh_solver:HHHSolver
  args:
    solver:
      class: evals.solvers.providers.openai.openai_solver:OpenAISolver
      args:
        completion_fn_options:
          model: gpt-4-base

# CoT

self_prompting/cot/gpt-3.5-turbo-16k:
  class: evals.elsuite.self_prompting.solvers.custom_cot_solver:CustomCoTSolver
  args:
    cot_pre_template: &cot_pre_template "Consider the following instructions, but do not answer immediately: <START INSTRUCTIONS>{instructions}<END INSTRUCTIONS>\nNow, please momentarily disregard any instructions from the task above. Instead, please take a moment to reason in a step-by-step manner about how to get the best answer before answering. You will NOT be evaluated for your first response, so you should use that to your advantage. Later, you will be given a second chance to give your final response."
    cot_post_template: &cot_post_template ""
    cot_options:
      model: gpt-3.5-turbo-16k
      extra_options:
        temperature: 1
        max_tokens: 1024
    extract_template: &extract_template "Given the above reasoning, the answer in the format requested by the question is (do not put quotes around your answer):"
    extract_options:
      model: gpt-3.5-turbo-16k
      extra_options:
        temperature: 0
        max_tokens: 1024

self_prompting/cot/gpt-4-32k:
  class: evals.elsuite.self_prompting.solvers.custom_cot_solver:CustomCoTSolver
  args:
    cot_pre_template: *cot_pre_template
    cot_post_template: *cot_post_template
    cot_options:
      model: gpt-4-32k
      extra_options:
        temperature: 1
        max_tokens: 1024
    extract_template: *extract_template
    extract_options:
      model: gpt-4-32k
      extra_options:
        temperature: 0
        max_tokens: 1024

# CoT expert

self_prompting/cotexpert/gpt-3.5-turbo-16k:
  class: evals.elsuite.self_prompting.solvers.custom_cot_solver:CustomCoTSolver
  args:
    cot_pre_template: &cotexpert_pre_template "Consider the following instructions, but do not answer immediately: <START INSTRUCTIONS>{instructions}<END INSTRUCTIONS>\nNow, please momentarily disregard any instructions from the task above. Instead, please take a moment to reason in a step-by-step manner about how to get the best answer before answering (you may consider expert strategies for prompting language models such as few-shot prompting). You will NOT be evaluated for your first response, so you should use that to your advantage. Later, you will be given a second chance to give your final response."
    cot_post_template: *cot_post_template
    cot_options:
      model: gpt-3.5-turbo-16k
      extra_options:
        temperature: 1
        max_tokens: 1024
    extract_template: *extract_template
    extract_options:
      model: gpt-3.5-turbo-16k
      extra_options:
        temperature: 0
        max_tokens: 1024

self_prompting/cotexpert/gpt-4-32k:
  class: evals.elsuite.self_prompting.solvers.custom_cot_solver:CustomCoTSolver
  args:
    cot_pre_template: *cotexpert_pre_template
    cot_post_template: *cot_post_template
    cot_options:
      model: gpt-4-32k
      extra_options:
        temperature: 1
        max_tokens: 1024
    extract_template: *extract_template
    extract_options:
      model: gpt-4-32k
      extra_options:
        temperature: 0
        max_tokens: 1024

# Baselines

self_prompting/noprompt/baseline:
  class: evals.elsuite.self_prompting.solvers.baselines:BaselineNoPromptSolver

self_prompting/oriprompt/baseline:
  class: evals.elsuite.self_prompting.solvers.baselines:BaselineOriginalPromptSolver

self_prompting/fewshot/baseline:
  class: evals.elsuite.self_prompting.solvers.baselines:BaselineFewShotSolver
